package com.it.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
// TODO SpringMVC (1)、配置访问路径
/*
 * @RequestMapping("/hello")
 * 【说明】：对外访问的路径，
 * 【使用范围】：可以加载类上，也可以加载方法名上
 * 【使用】：精准匹配：@RequestMapping("/hello")
 *                  属性：value：访问路径
 *                       method：请求方式
 *         模糊匹配：*  表示任意一层字符串、例如：user/*  ->  user/a  user/b
 *                 ** 表示任意层任意字符串、例如：user/** ->  user/a/b...
 *         类是上和方法上添加 @RequestMapping的区别
 *                 类：提取通用的访问地址。例如：：@RequestMapping("/user")
 *                 方法上：是具体的访问地址,例如：@RequestMapping("/user/login"),可以省略 /user
 *                 总结：类可以不加访问地址，但方法上是必须加的
 *          请求方式
 *                 默认情况任意请求方式都可以访问
 *                 指定请求方式：@RequestMapping(method = RequestMethod.POST)
 *                 多个用 { } 包裹
 *                 不符合请求方式：会报405异常！！！
 *          注解进阶：只能使用在方法上
 *                 @GetMapping("/user")相当于@RequestMapping(value = "/user",method = RequestMethod.GET)
 *                 @PostMapping("/user")相当于@RequestMapping(value = "/user",method = RequestMethod.POST)
 *                 @PutMapping("/user")相当于@RequestMapping(value = "/user",method = RequestMethod.PUT)
 *                 @DeleteMapping("/user")相当于@RequestMapping(value = "/user",method = RequestMethod.DELETE)
 * 【注意】：路径地址可以不使用 /开头：例如： @RequestMapping("hello")
 *         多个地址通过 {"路径1","路径2"}
 */

/*
 * @ResponseBody
 *  【说明】：不会查找视图解析器，直接将数据放入响应体中返回
 *  【使用范围】：可以加在配置类上，也可以加载方法上，加载类上就是全局的，方法上可以不加
 *  【注意】：使用该注解，不会查找视图，并且请求转发和请求重定向不在生效
 */
@Controller
@ResponseBody
public class springmvc01 {
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    // @GetMapping("/user")
    // @PostMapping("/user")
    // @PutMapping("/user")
    // @DeleteMapping("/user")
    // @ResponseBody
    public String hello() {
        /**
         *  返回给前端的响应数据
         *  如果没有return默认是返回是跳转一个页面
         */
        return "Hello Spring MVC!!!";
    }
}


